home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / message / subcls / syscolor.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1995-06-13  |  4.0 KB  |  121 lines

  1. VERSION 2.00
  2. Begin Form Form1 
  3.    BorderStyle     =   3  'Fixed Double
  4.    Caption         =   "System Color Tracker"
  5.    ClientHeight    =   855
  6.    ClientLeft      =   1095
  7.    ClientTop       =   1485
  8.    ClientWidth     =   4935
  9.    Height          =   1260
  10.    Left            =   1035
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   855
  13.    ScaleWidth      =   4935
  14.    Top             =   1140
  15.    Width           =   5055
  16.    Begin MsgHook MsgHook 
  17.       Left            =   135
  18.       Top             =   135
  19.    End
  20.    Begin Label Label1 
  21.       AutoSize        =   -1  'True
  22.       Caption         =   "Label1"
  23.       Height          =   195
  24.       Index           =   0
  25.       Left            =   1845
  26.       TabIndex        =   0
  27.       Top             =   135
  28.       Width           =   585
  29.    End
  30. Option Explicit
  31. ' Array to hold system colors
  32. Dim SysColor(0 To 20) As Long
  33. ' Windows message to watch for
  34. Const WM_SYSCOLORCHANGE = &H15
  35. ' Win16 API calls
  36. Declare Function GetSysColor Lib "User" (ByVal nIndex As Integer) As Long
  37. Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
  38. ' System Colors
  39. Const COLOR_SCROLLBAR = 0
  40. Const COLOR_BACKGROUND = 1
  41. Const COLOR_ACTIVECAPTION = 2
  42. Const COLOR_INACTIVECAPTION = 3
  43. Const COLOR_MENU = 4
  44. Const COLOR_WINDOW = 5
  45. Const COLOR_WINDOWFRAME = 6
  46. Const COLOR_MENUTEXT = 7
  47. Const COLOR_WINDOWTEXT = 8
  48. Const COLOR_CAPTIONTEXT = 9
  49. Const COLOR_ACTIVEBORDER = 10
  50. Const COLOR_INACTIVEBORDER = 11
  51. Const COLOR_APPWORKSPACE = 12
  52. Const COLOR_HIGHLIGHT = 13
  53. Const COLOR_HIGHLIGHTTEXT = 14
  54. Const COLOR_BTNFACE = 15
  55. Const COLOR_BTNSHADOW = 16
  56. Const COLOR_GRAYTEXT = 17
  57. Const COLOR_BTNTEXT = 18
  58. Const COLOR_INACTIVECAPTIONTEXT = 19
  59. Const COLOR_BTNHIGHLIGHT = 20
  60. Sub Form_Load ()
  61.    ' Setup MsgHook control
  62.    MsgHook.HwndHook = Me.hWnd
  63.    MsgHook.Message(WM_SYSCOLORCHANGE) = True
  64.    ' Preload system colors into an array
  65.    Dim nRet As Long
  66.    nRet = SendMessage(Me.hWnd, WM_SYSCOLORCHANGE, 0, 0&)
  67.    ' Load, Size, and Position controls
  68.    Dim i As Integer
  69.    For i = 1 To 20
  70.       Load Label1(i)
  71.       Label1(i).Visible = True
  72.       Label1(i).Top = Label1(i - 1).Top + Label1(i - 1).Height * 1.5
  73.    Next i
  74.    Me.Height = (Me.Height - Me.ScaleHeight) + Label1(20).Top + Label1(20).Height + Label1(0).Top
  75.    Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
  76.    ' Fill label array
  77.    Label1(0) = "COLOR_SCROLLBAR"
  78.    Label1(1) = "COLOR_BACKGROUND"
  79.    Label1(2) = "COLOR_ACTIVECAPTION"
  80.    Label1(3) = "COLOR_INACTIVECAPTION"
  81.    Label1(4) = "COLOR_MENU"
  82.    Label1(5) = "COLOR_WINDOW"
  83.    Label1(6) = "COLOR_WINDOWFRAME"
  84.    Label1(7) = "COLOR_MENUTEXT"
  85.    Label1(8) = "COLOR_WINDOWTEXT"
  86.    Label1(9) = "COLOR_CAPTIONTEXT"
  87.    Label1(10) = "COLOR_ACTIVEBORDER"
  88.    Label1(11) = "COLOR_INACTIVEBORDER"
  89.    Label1(12) = "COLOR_APPWORKSPACE"
  90.    Label1(13) = "COLOR_HIGHLIGHT"
  91.    Label1(14) = "COLOR_HIGHLIGHTTEXT"
  92.    Label1(15) = "COLOR_BTNFACE"
  93.    Label1(16) = "COLOR_BTNSHADOW"
  94.    Label1(17) = "COLOR_GRAYTEXT"
  95.    Label1(18) = "COLOR_BTNTEXT"
  96.    Label1(19) = "COLOR_INACTIVECAPTIONTEXT"
  97.    Label1(20) = "COLOR_BTNHIGHLIGHT"
  98. End Sub
  99. Sub Form_Paint ()
  100.    Dim i As Integer
  101.    Dim Offset As Integer
  102.    ' Paint a box showing color by each label
  103.    Offset = Label1(0).Top
  104.    For i = COLOR_SCROLLBAR To COLOR_BTNHIGHLIGHT
  105.       Me.ForeColor = SysColor(i)
  106.       Line (Offset, Label1(i).Top)-(Label1(i).Left - Offset, Label1(i).Top + Label1(i).Height), , BF
  107.       Line (Offset, Label1(i).Top)-(Label1(i).Left - Offset, Label1(i).Top + Label1(i).Height), 0&, B
  108.    Next i
  109. End Sub
  110. Sub MsgHook_Message (Msg As Integer, wParam As Integer, lParam As Long, Result As Long)
  111.    Dim i As Integer
  112.    If Msg = WM_SYSCOLORCHANGE Then
  113.       '
  114.       ' Update color table when msg arrives.
  115.       '
  116.       For i = COLOR_SCROLLBAR To COLOR_BTNHIGHLIGHT
  117.          SysColor(i) = GetSysColor(i)
  118.       Next i
  119.    End If
  120. End Sub
  121.